microsoftfandomcom_uk-20200214-history
Модуль:Check for unknown parameters
This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and trim(s) ~= '' end function p.check (frame) local args = frame.args local pargs = frame:getParent().args local ignoreblank = isnotempty(frame.args'ignoreblank') local showblankpos = isnotempty(frame.args'showblankpositional') local knownargs = {} local unknown = frame.args'unknown' or 'Found _VALUE_, ' local preview = frame.args'preview' local values = {} local res = {} local regexps = {} -- create the list of known args, regular expressions, and the return string for k, v in pairs(args) do if type(k) 'number' then v = trim(v) knownargsv = 1 elseif k:find('^regexp1-90-9*$') then table.insert(regexps, '^' .. v .. '$') end end if isnotempty(preview) then preview = ' Увага: ' .. preview .. ' (це повідомлення відображається лише у попередньому перегляді сторінки). ' elseif preview nil then preview = unknown end -- loop over the parent args, and make sure they are on the list for k, v in pairs(pargs) do if type(k) 'string' and knownargsk nil then local knownflag = false for i, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then k = mw.ustring.gsub(k, '^%w\-_', '?') table.insert(values, k) end elseif type(k) 'number' and knownargstostring(k) nil and ( showblankpos or isnotempty(v) ) then local vlen = mw.ustring.len(v) v = mw.ustring.sub(v, 1, (vlen < 25) and vlen or 25) v = mw.ustring.gsub(v, '^%w\-_', '?') table.insert(values, k .. ' = ' .. v .. ((vlen >= 25) and ' ...' or '')) end end -- add resuls to the output tables if #values > 0 then if frame:preprocess( " " ) "" then unknown = preview end for k, v in pairs(values) do if v '' then -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links v = ' ' end local r = unknown:gsub('_VALUE_', v) table.insert(res, r) end end return table.concat(res) end function p.check_old (frame) local args = frame.args local pargs = frame:getParent().args local ignoreblank = isnotempty(frame.args'ignoreblank') local checkpos = isnotempty(frame.args'checkpositional') local knownargs = {} local unknown = 'Found _VALUE_, ' local res = {} local regexps = {} local comments = {} local commentstr = '' -- create the list of known args, regular expressions, and the return string for k, v in pairs(args) do if type(k) 'number' then v = mw.ustring.gsub(v, '^%s*(.-)%s*$', '%1') knownargsv = 1 else if (k 'unknown' and type(v) 'string') then unknown = v elseif (mw.ustring.match(k, '^regexp%d*$') and type(v) 'string') then table.insert(regexps, '^' .. v .. '$') end end end -- loop over the parent args, and make sure they are on the list for k,v in pairs(pargs) do if (type(k) 'string' and knownargsk nil) then local knownflag = nil for r = 1,#regexps do if( mw.ustring.match(k,regexpsr) ) then knownflag = 1 end end if( (not knownflag) and ( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) ) then k = mw.ustring.gsub(k, '^%w\-_', '?') local r = mw.ustring.gsub(unknown, '_VALUE_', k) table.insert(res, r) table.insert(comments, '"' .. k .. '"') end elseif(checkpos and type(k) 'number' and knownargstostring(k) nil) then if( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) then local r = mw.ustring.gsub(unknown, '_VALUE_', k) table.insert(res, r) table.insert(comments, '"' .. k .. '"') end end end if(#comments > 0) then commentstr = '' end return table.concat(res) .. commentstr end return p